Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.02.2013, 23:33
Аспирант
Отправить личное сообщение для Petja Посмотреть профиль Найти все сообщения от Petja
 
Регистрация: 13.03.2011
Сообщений: 57

Пропадает элемент объекта, хотя он есть...
var http = false;
var url1 = '/assets/components/ajax/connector.php?action=func'; // Возвращает: "test"
var glob = {};
if(navigator.appName == "Microsoft Internet Explorer") {
    http = new ActiveXObject("Microsoft.XMLHTTP");
}else{
    http = new XMLHttpRequest();
}
function getData(url){
    http.open("GET", url, true);
    http.onreadystatechange=function(){
        if(http.readyState == 4){
            glob.ret1 = http.responseText;
        }
    }
    http.send(null);
}
getData(url1);
console.log(glob); // [ret1 "test"] ТАК ЕСТЬ!
console.log(glob.ret1); // [undefined] А ТАК НЕТУ... :-((((((


Подскажите, почему так? Заранее спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 12.02.2013, 23:36
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Petja,
Не инициализирован glob - как объект
Где то в теле должно быть
var glob = {}

Последний раз редактировалось Deff, 12.02.2013 в 23:42.
Ответить с цитированием
  #3 (permalink)  
Старый 12.02.2013, 23:38
Аспирант
Отправить личное сообщение для Petja Посмотреть профиль Найти все сообщения от Petja
 
Регистрация: 13.03.2011
Сообщений: 57

Сообщение от Deff Посмотреть сообщение
Petja,
Не инициализирован glob - как объект
Где то в теле должно быть
var glob = {}
Так он же объявлен вверху? В теле чего?
А почему тогда первый консоль лог его выдает?
Спасибо.
Ответить с цитированием
  #4 (permalink)  
Старый 13.02.2013, 00:20
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Petja
Так он же объявлен вверху? В теле чего?
А почему тогда первый консоль лог его выдает?
Спасибо.
запрос асинхронный.всё верно. выполнение кода не блокируется на время запроса
if(http.readyState == 4)
{
  glob.ret1 = http.responseText;
  alert(glob.ret1);
}

Deff, всё как обычно-прежде чем "помочь" кому то , задумайся- сколько вреда твоя "помощь" приносит. И изучи, наконец, основы минимальные.

Последний раз редактировалось dmitriymar, 13.02.2013 в 00:25.
Ответить с цитированием
  #5 (permalink)  
Старый 13.02.2013, 00:37
Аспирант
Отправить личное сообщение для Petja Посмотреть профиль Найти все сообщения от Petja
 
Регистрация: 13.03.2011
Сообщений: 57

Сообщение от dmitriymar Посмотреть сообщение
запрос асинхронный.всё верно. выполнение кода не блокируется на время запроса
if(http.readyState == 4)
{
  glob.ret1 = http.responseText;
  alert(glob.ret1);
}
Спасибо!

Вы не могли бы мне помочь понять, это непонимание асинхронного уже не в первый раз бьет по рукам.

Как так, что в конце кода, рядом стоят:
console.log(glob); // [ret1 "test"] ТАК ЕСТЬ!
console.log(glob.ret1); // [undefined] А ТАК НЕТУ... :-((((((


И в первом там есть ret1 со значением "test", а во втором, более конкретном - уже нету?

Что значит асинхронный? Это когда он выполняется, то переменная ведь назначается, после выполнения куда она девается, ведь понятно что запрос уже точно выполнен и данные уже точно получены?

Не подскажете, как мне лучше получить подряд с 2-х урлов, текстовые данные, для дальнейшей их конкатинации?
Ответить с цитированием
  #6 (permalink)  
Старый 13.02.2013, 00:56
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Petja
И в первом там есть ret1 со значением "test", а во втором, более конкретном - уже нету?
его ещё нет.
http://javascript.ru/ajax/intro
Ответить с цитированием
  #7 (permalink)  
Старый 13.02.2013, 02:29
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Ну чтож думаю нужно расшифровывать , в свете твоего минуса.
Многоуважаемый Deff, если бы вы обратили внимание, что летом, после вашей активной компании по сбору плюсиков, с форума ушли практически все знающие язык. И вернулись, в течении пары месяцев, после вашего ухода.
Сейчас наблюдается, такая же картина после вашего прихода-ушли почти все. Это видно, если просмотреть форум. Параллели не просматриваете? Зря. При этом ,с вашим приходом, на форуме стали задаваться массово вопросы сколько будет 2+2 , на какие ранее т.с самостоятельно находили ответы, среди сотен подобных на форуме.
Качество ваших же ответов, оставляет желать лучшего, что в прочем и не удивительно, при ваших заявлениях что язык изучается за пол года.
Закономерный вопрос -почему тогда в серьёзные конторы зачастую стоит требование от 2-3 лет?
О вашем же увлечении фреймами , я вобще молчу. вы так и не удосужились воспользоваться поиском , и увидеть что ваши советы и изыскания, ведут прислушавшихся под бан и фильтры поисковых систем. Впрочем как и большинство ваших советов, возможно не сразу, но приведут прислушавшихся к печальному результату.
От того что вы посчитали себя спецом , вы им не станете.
А по поводу , вреда от немо , меня, кому вы там объявили ещё джихад?
Вред всех до кучи , не превысит тот вред какой творите вы. Своей глупостью, тупостью, самовлюбленностью и т.д

Последний раз редактировалось dmitriymar, 13.02.2013 в 02:32.
Ответить с цитированием
  #8 (permalink)  
Старый 13.02.2013, 13:11
Аспирант
Отправить личное сообщение для Petja Посмотреть профиль Найти все сообщения от Petja
 
Регистрация: 13.03.2011
Сообщений: 57

Сообщение от dmitriymar Посмотреть сообщение
его ещё нет.
http://javascript.ru/ajax/intro
Прочитал все по ссылке. Но все равно не понятно, как так,
идут 2 подряд строки:
console.log(glob);

и сразу за ней:
console.log(glob.ret1);

В первой хранится значение, во второй нет...

Если во втором случае значения еще нет, то и в первом его не должно быть.

И как его еще нет, если объект glob глобальный и значение ему уже точно присвоено, т.к. перед дампом объекта и элемента объекта идет:
getData(url1);


???
Ответить с цитированием
  #9 (permalink)  
Старый 13.02.2013, 13:17
Аспирант
Отправить личное сообщение для Petja Посмотреть профиль Найти все сообщения от Petja
 
Регистрация: 13.03.2011
Сообщений: 57

Сообщение от Petja Посмотреть сообщение
И как его еще нет, если объект glob глобальный и значение ему уже точно присвоено, т.к. перед дампом объекта и элемента объекта идет:
getData(url1);
Эта часть вопроса отменяется, т.к. вызов функции ajax пошел и сразу за ним идет дальше код, хотя функция выполняется уже сама по себе.
Это я понял, но все таки - как так в первом случае console.log есть значение, а во втором нету???
Ответить с цитированием
  #10 (permalink)  
Старый 13.02.2013, 13:28
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от Petja
как так в первом случае console.log есть значение, а во втором нету???
А какое она дает значение?
Вы же объявили наверху
var glob = {};
вот
console.log(glob);
и дает значение пустого объекта
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверить есть ли элемент с определённым классом RAZVOR Events/DOM/Window 1 16.11.2012 21:46
Вытеснить элемент из потока Isaac (X)HTML/CSS 5 13.04.2012 15:14
Drag-n-Drop - перетянуть элемент Jugo ExtJS 1 10.08.2011 19:10
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00